home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / batchut / bed11.zip / BEDLIB.BAS < prev    next >
BASIC Source File  |  1985-12-08  |  23KB  |  768 lines

  1. SUB CREDITS STATIC
  2.  
  3. REM PUTS UP CREDITS WHEN PROGRAM INVOKED
  4.  
  5. DEFINT A-Z
  6. SEC = 3
  7. CLS
  8. KEY OFF
  9.  
  10. RO=01:CO=30:X$="BATCH EDIT"
  11. CALL QPRINT (X$,RO,CO)
  12. RO=02:CO=23:X$="ver 1.1  December 7, 1985"
  13. CALL QPRINT (X$,RO,CO)
  14. RO=04:CO=03:X$="Copyright (c) 1985  Ken Goosens, 5020 Portsmouth Road, Fairfax, VA 22032"
  15. CALL QPRINT (X$,RO,CO)
  16. RO=07:CO=02:X$="You are granted a limited license to use and distribute this program provided"
  17. CALL QPRINT (X$,RO,CO)
  18. RO=09:CO=15:X$="1.  you do not alter or remove this notice"
  19. CALL QPRINT (X$,RO,CO)
  20. RO=11:CO=15:X$="2.  you receive no fee or charge for this program"
  21. CALL QPRINT (X$,RO,CO)
  22. RO=13:CO=15:X$="3.  you assume all liability for using this program"
  23. CALL QPRINT (X$,RO,CO)
  24. CALL WAITSECORKEY (SEC)
  25.  
  26. END SUB
  27.  
  28. SUB INITIALIZE (NUMFLDS%,YNVAL$(1),ROW%(1),COL%(1),PROMPT$(1),_
  29.                 FLDSIZE%(1),FLDTYPE$(1),FLDVAL$(1),HLP$(1)) STATIC
  30.  
  31. REM READS IN A TABLE DEFINING SCREEN AND FIELDS 
  32. REM PASS NUMFLD% - Number of fields to print on screen
  33. REM YNVAL$    - Whether field preceded by Y/N field
  34. REM ROW%      - Row where field prompt is on screen
  35. REM COL%      - Column on screen where field prompt begins
  36. REM PROMPT$   - Field prompt
  37. REM FLDSIZE%  - Size of input field to right of prompt
  38. REM FLDTYPE$  - Type of field - L = LABEL, no field inputted
  39. REM                           - N = natural number (0,1,2,3,...)
  40. REM                           - S = variable length string
  41. REM FLDVAL$   - Default field value - displayed, retained if press <rtn>
  42. REM HLP$      - Explanation of field displayed on bottom of screen
  43.  
  44. DEFINT A-Z
  45. FOR I=1 TO NUMFLDS%
  46.   READ YNVAL$(I),ROW%(I),COL%(I),PROMPT$(I),FLDSIZE%(I),_
  47.                 FLDTYPE$(I),FLDVAL$(I),HLP$(I)
  48. NEXT
  49.  
  50. DATA  ,01,23,B A T C H   E D I T O R       Ver 1.1,00,L,   ,
  51. DATA  ,03,02,"READ:"                              ,33,S,   ,"Name of file that is to be changed (e.g. TEST.DAT)"
  52. DATA  ,03,42,"WRITE:"                             ,30,S,   ,"Name of file to write changed lines to (e.g. TEST.EDI)"
  53. DATA  ,04,02,"Save specs in:"                     ,24,S,   ,"File to save these editing specifications in (e.g. TEST.SPC)"
  54. DATA  ,05,48,EXCLUDE LINES                        ,00,L,   ,
  55. DATA N,07,44,With a length less than              ,10,N,1  ,"Drop lines shorter than a minimum (e.g. empty lines)"
  56. DATA N,08,44,"With a word in:"                    ,20,S,   ,"Drop lines containing any line in file (e.g. headers with 'PAGE')"
  57. DATA N,09,44,With a length greater than           ,05,N,999,"Drop lines longer than a maximum"
  58. DATA N,10,44,"Save lines in:"                     ,21,S,   ,"Put excluded lines in a file so can review (e.g. TEST.EXC)"
  59. DATA  ,06,08,REPLACE                              ,00,L,   ,
  60. DATA N,08,04,Convert to upper case                ,00, ,   ,"Change all characters to upper case [abc...z -> ABC...Z]"
  61. DATA N,09,04,"Global srch/rep in:"                ,15,S,   ,"File of words with substitutes: <old>,<new>  e.g. 'Dec 85' -> 'Jan 86' "
  62. DATA N,10,04,"Delete these chars:"                ,16,S,   ,"Omit all instances of all these characters"
  63. DATA N,11,04,"Translate from:"                    ,17,S,$  ,"Characters to be individually replaced (e.g. $ %)"
  64. DATA  ,12,04,"            to:"                    ,17,S," ","Replacement characters for above (e.g. blank for $,%)"
  65. DATA  ,14,08,FIX LINE LENGTH                      ,00,L,   ,
  66. DATA N,16,04,Pad/blanks lines shorter than        ,05,N,1  ,"Set minimum length for output, right fill blanks"
  67. DATA  ,18,08,"EDIT NUMBERS [commas, () ]"         ,00,L,   ,
  68. DATA N,20,04,Convert parentheses to minus sign    ,00, ,   ,"Convert # in parentheses to negative (e.g. '(378.56)' -> '-378.56 ')"
  69. DATA N,21,04,Omit commas                          ,00, ,   ,"Remove commas inside numbers (e.g. 1,800,412.5 -> 1800412.5)"
  70. DATA N,22,04,"..right delimited?"                 ,00, ,   ,"Do numbers end on right with a non-numeric character? (e.g. 12 285.4VA)"
  71. DATA  ,23,04,"..Maximum # decimals:"              ,02,N,0  ,"Maximum # digits after decimal point (e.g. 17.125 has 3)"
  72. DATA  ,12,48,"EDIT DATES (omit sep,reorder)"      ,00,L,   ,
  73. DATA  ,14,44,"# digits in input year:"            ,01,N,2  ,"In data to edit, # digits in year (e.g. 86 is 2, 1986 is 4)"
  74. DATA  ,15,44,"# digits in output year:"           ,01,N,2  ,"# digits you want written out for a year (1986 is all 4, 86 is last 2)"
  75. DATA  ,16,44,"Separator btw Day,Month,Year:"      ,01,S,-  ,"In data to edit, what is btw M,D,Y (e.g. for '12/24/86' is '/')"
  76. DATA N,17,44,Edit date with spelled month         ,00, ,   ,"Edit date where month is first 3 letters (e.g. '11-Oct-86')"
  77. DATA  ,18,44,"..Input date format:"               ,03,S,DMY,"In incoming data to edit, order of Day,Month,Year (e.g. 11-Feb-86 is DMY)"
  78. DATA  ,19,44,"..Output date format:"              ,03,S,YMD,"Desired order of output (e.g. YMD takes '11-Feb-86' to 860211)"
  79. DATA N,20,44,Edit numeric dates                   ,00, ,   ,"Edit dates where numbers used for D,M,Y (e.g. 10-24-86)"
  80. DATA  ,21,44,"..Input date format:"               ,03,S,MDY,"In incoming data to edit, order of Day,Month,Year (e.g. 10-24-86 is MDY)"
  81. DATA  ,22,44,"..Output date format:"              ,03,S,YMD,"Desired order of date in output (e.g. YMD is 861024)"
  82.  
  83. END SUB
  84.  
  85. SUB PRTSCRN (NUMFLDS%,YNVAL$(1),ROW%(1),COL%(1),PROMPT$(1),FLDSIZE%(1),_
  86.                 FLDTYPE$(1),FLDVAL$(1),HLP$(1)) STATIC
  87.  
  88. REM PRINTS TABLE DRIVEN SCREEN
  89.  
  90. DEFINT A-Z
  91. CLS
  92. FOR I=1 TO NUMFLDS%
  93.   IF YNVAL$(I)<>"" THEN_
  94.       CO% = COL%(I)-3:_
  95.       CALL QPRINT (YNVAL$(I),ROW%(I),CO%)
  96.   CALL QPRINT (PROMPT$(I),ROW%(I),COL%(I))
  97.   X% = COL%(I)+LEN(PROMPT$(I))+1
  98.   CALL ECHO (FLDVAL$(I),ROW%(I),X%,FLDSIZE%(I))
  99. NEXT I
  100.  
  101. END SUB
  102.  
  103. SUB GETSCRN (NUMFLDS%,YNVAL$(1),ROW%(1),COL%(1),PROMPT$(1),FLDSIZE%(1),_
  104.                 FLDTYPE$(1),FLDVAL$(1),HLP$(1)) STATIC
  105.  
  106. REM DOES FULL SCREEN DATA ENTRY FOR TABLE DRIVEN SCREEN
  107.  
  108. NUL$ = ""
  109. TOPGETSCRN:
  110.   FOR I=1 TO NUMFLDS%
  111.     C% = COL%(I) - 3
  112.     CALL EXPLAIN (HLP$(I))
  113.     IF YNVAL$(I) <> "" THEN CALL GETCHAR (ROW%(I),C%,NUL$,VLDANS$,YNVAL$(I))
  114.     X = INSTR("LSN",FLDTYPE$(I))
  115.     IF X > 1 AND YNVAL$(I)<>"N" THEN_
  116.       IF X = 2 THEN_
  117.          CALL GETSTR (ROW%(I),COL%(I),PROMPT$(I),FLDSIZE%(I),FLDVAL$(I))_
  118.       ELSE_
  119.          CALL GETNATNUM (ROW%(I),COL%(I),PROMPT$(I),FLDSIZE%(I),FLDVAL$(I))
  120.   NEXT I
  121.   CALL UPCASE (FLDVAL$(2))
  122.   CALL UPCASE (FLDVAL$(3))
  123.   IF FLDVAL$(3)=FLDVAL$(2) AND FLDVAL$(2) <> "" THEN_
  124.      X$ = "Cannot WRITE to same file READING!":_
  125.      CALL EXPERR (X$):_
  126.      GOTO TOPGETSCRN
  127.   CALL UPCASE (FLDVAL$(28))
  128.   CALL UPCASE (FLDVAL$(29))
  129.   CALL UPCASE (FLDVAL$(31))
  130.   CALL UPCASE (FLDVAL$(32))
  131. END SUB
  132.  
  133.  
  134. SUB FIXLEN (L$,MINLEN%,FILLER$) STATIC
  135.  
  136. REM FILLS STRNG$ WITH FILLER$ UP TO LENGTH OF MINLEN%
  137.  
  138. DEFINT A-Z
  139. X = LEN(L$)
  140. IF X < MINLEN% THEN L$ = L$+ STRING$(MINLEN%-X,FILLER$)
  141.  
  142. END SUB
  143.  
  144. SUB SPELLDATE (L$,DSEP$,INLEN%(1),OUTYRLEN%,TINLEN%,TOUTLEN%,NINFLDS%,_
  145.              NOUTFLDS%,YPOS%,MONPOS%,OUTORD%(1),FILLER$) STATIC
  146.  
  147. REM CONVERTS DATES WHERE MONTH IS SPELLED BY FIRST THREE LETTERS
  148. REM OF MONTH.  REMOVES SEPARATOR BETWEEN DATE FIELDS
  149. REM   (DAY,MONTH,YEAR).  REARRANGES OR OMITS DATE FIELDS.  ALTERS
  150. REM   LENGTH OF YEAR FIELD.  PRESERVES ORIGINAL LENGTH OF DATE 
  151. REM   FIELD BY PADDING TO RIGHT UNLESS MUST EXTEND FIELD SIZE
  152.  
  153. REM PASS L$        - LINE TO EDIT
  154. REM      DSEP$     - SEPARATOR BETWEEN DATE FIELDS
  155. REM      INLEN%    - LENGTH OF EACH INPUT FIELD IN DATE
  156. REM      OUTYRLEN% - LENGTH OF YEAR OUTPUT FIELD
  157. REM      TINLEN%   - TOTAL LENGTH OF INPUT DATE
  158. REM      TOUTLEN%  - TOTAL LENGTH OF OUTPUT DATE
  159. REM      NINFLDS%  - NUMBER OF INPUT FIELDS IN DATE
  160. REM      NOUTFLDS% - NUMBER OF OUTPUT FIELDS (PARTS OF DATE)
  161. REM      YPOS%     - WHICH INPUT POSITION IS YEAR
  162. REM      MONPOS%   - WHICH INPUT POSITION IS MONTH
  163. REM      OUTORD%   - ORDER OF OUTPUT (WHAT INPUT POS IS 1ST,2ND,...)
  164. REM      FILLER$   - CHARACTERS TO PAD DATE FIELD TO RIGHT IF OUTPUT IS
  165. REM                     SHORTER THAN INPUT
  166. REM GET  L$        - EDITED LINE
  167.  
  168. DEFINT A-Z
  169. DIM D.FIELD$(3)
  170.  
  171. INCOLD = TINLEN%  - INLEN%(1)
  172. INCREP = TOUTLEN% - INLEN%